// L. Nigay
// Fenetre contenat une zone de texte editable et scrollabe

package util;


import java.awt.*;
import java.awt.event.*;
import java.rmi.RemoteException;

import javax.swing.*;

import edu.ujf.sharepas.rmi.Client;
import edu.ujf.sharepas.impl.Message;
import edu.ujf.sharepas.rmi.Serveur;



public class Fenetre extends JFrame{
	private BorderLayout global;
	private JTextArea texte;
	private JMenuItem optionQuitter;
	private JTextField saisie ;
	private Serveur serveur ;
	private Client client ;

	// Classe interne non anonyme pour recupererl'evenement de fermeture
	// de la fenetre
	private class WinListener extends WindowAdapter {
		public void windowClosing(WindowEvent ev) {
			setVisible(false);
			System.exit(0);
		}
	}

	// Classe interne non anonyme pour recuperer les selections dans le menu1 Fichier
	private class GestionnaireMenu1 implements ActionListener {
		public void actionPerformed( ActionEvent e ) {
			if  (e.getSource() == optionQuitter){
	      		setVisible(false);
	      		try {
					serveur.disconnect(client);
				} catch (RemoteException e1) {
					e1.printStackTrace();
				}
				System.exit( 0 );
			}
		}
	}

	private class GestionnaireSaisie implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			String s = "";
			s = e.getActionCommand();
			//ajoutTexte(s+"\n");
			saisie.setText("");
			try {
				serveur.message(new Message(s,client.getUser().getName()));
			} catch (RemoteException e1) {
				e1.printStackTrace();
			}
		
		}
		
	}
		
	// Constructeur de la fenetre
	public Fenetre(){
	    
	setTitle(new String("Forum de discussion"));
	global= new BorderLayout(5,5); // Pour positionner le menu la palette et la zone de dessin
	Container c = getContentPane(); // Recuperation du contenu de la fenetre pour y mettre les widgets
	c.setLayout(global); //Contenu de la fenetre gere par BorderLayout (N, S, W, E positionnement)
	 
	// Creation du menu
	JMenuBar barre = new JMenuBar();  // creer une barre de menus.

	setJMenuBar( barre );  // definir la barre de menus pour le JFrame.
	
	
	// Creer le menu Fichier
	JMenu menuFichier = new JMenu( "Fichier" );
	menuFichier.setMnemonic( 'F' );
	
	//Creer le gestionnaire d'evenement pour ce menu Fichier
	GestionnaireMenu1 gest1 = new GestionnaireMenu1 ();
	
	// Creer une option dans ce menu Fichier
	optionQuitter = new JMenuItem( "Quitter" );
	optionQuitter.setMnemonic( 'Q' );
	optionQuitter.addActionListener(gest1);
	menuFichier.add( optionQuitter );
	
	barre.add( menuFichier,BorderLayout.WEST );    // ajouter le menu Fichier
	
	// zone du texte scrollable
	texte = new JTextArea();
	c.add(texte,BorderLayout.WEST);
	
	texte.setSize(1000,800);
	texte.setPreferredSize(new Dimension (1000,800));

	JScrollPane JSP0 = new JScrollPane(texte);
	c.add(JSP0, BorderLayout.CENTER);

	texte.setBackground (Color.white);
	setSize(400,300);
	
	saisie = new JTextField("Entrez du texte ici");
	c.add(saisie,BorderLayout.SOUTH);
	GestionnaireSaisie gestionnaire = new GestionnaireSaisie();
	saisie.addActionListener(gestionnaire);
	
	show();
	}

public  void ajoutTexte(String mess)
{
	texte.append(mess);
	texte.setCaretPosition (texte.getText().length());

}

public void setServeur(Serveur monObjServeur) {
	this.serveur = monObjServeur ;
	
}

public void setClient(Client monClient) {
	this.client = monClient ;
	
}


}
